/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.servicio.interfaces;

import desarrollosoft.ghce.entidades.Especialidad;
import desarrollosoft.ghce.entidades.Profesional;
import desarrollosoft.ghce.entidades.Sexo;
import desarrollosoft.ghce.entidades.TipoDocumento;
import java.util.Date;
import java.util.List;

/**
 *
 * @author ariel
 */
public interface IServicioProfesionales {
    
    public Profesional buscarPorNombreUsuario(String nombreUsuario) throws Exception;
            
    public List<Profesional> buscarTodosProfesionales();
    
    public List<Especialidad> buscarTodasEspecialidades();
    
    public List<TipoDocumento> obtenerTiposDocumento();
    
    public List<Sexo> obtenerTodosSexo();
    
    public List<String> obtenerDatosBuscables();
    
    public List<String> obtenerTodosRoles();
    
    public void crearProfesional(Profesional profesional) throws Exception;
    
    public void modificarProfesional(Profesional profesional) throws Exception;
    
    public void bajaLogicaProfesional(Profesional profesional, String causas, Date fechaSuceso) throws Exception;

    /**
     * 
     * @param dato para buscar
     * @param tipoDato "Apellido" o "Numero Documento" o "Nombre de Usuario"
     * @return profesionales que coincidan
     */
    public List<Profesional> buscarProfesionales(String dato, String tipoDato);

    public List<Especialidad> buscarEspecialidades(String nombre);

    public void reactivarProfesional(Profesional profesional) throws Exception;

    public void resetearContrasenia(Profesional profesional) throws Exception;
    
    public void ingresaNuevaContrasenia(Profesional profesional, String contrasenia, String contraseniaRepetida) throws Exception;
    
    public boolean estaReseteado(Profesional profesional);

    public Profesional obtenerProfesional(String nombreUsuarioActual) throws Exception;

    public void cambiaContrasenia(Profesional profesional, String contrasenia, String contraseniaRepetida) throws Exception;
    
}
